Reconfigurable semiconductor integrated circuits, such as field programmable gate arrays (hereinafter also referred to as FPGAs), are drawing attention these days. An FPGA obtains basic logical information through logical blocks, and switches connections among the logical blocks with switch blocks. With this configuration, the FPGA can achieve a logical function desired by a user. The logical information about the logical blocks, and the data of the switch blocks for switching connections are stored in a configuration memory, and a desired logical function is achieved in accordance with the stored data. Roughly speaking, configuration memories are used in two kinds of circuits. Specifically, configuration memories are used to store selection information about a multiplexor circuit (hereinafter also referred to as an MUX circuit) for switching wiring connections, and logical information about a lookup table circuit (hereinafter also referred to as an LUT circuit) for achieving a desired logic.
When the information in a configuration memory is made nonvolatile, a nonvolatile FPGA is formed. Since the information is nonvolatile, there is no longer the need to read data from an external memory when the FPGA is activated. Thus, the FPGA can be instantaneously activated, and the power consumption by the FPGA can be reduced through power shutdown conducted while the FPGA is not used.
Meanwhile, a configuration memory used in an LUT circuit can also be used as a small-scale random access memory (RAM). A RAM formed with the LUT circuit (this RAM will be hereinafter also referred to as an LUT-RAM) can access data asynchronously regardless of the clock timing, and handle data. Such an LUT-RAM is characteristically capable of high-speed writing and reading.
However, where the configuration memory in an LUT circuit is made nonvolatile, it takes time to write and erase data in the nonvolatile memory, and therefore, it is difficult to use the configuration memory as an LUT-RAM. Particularly, where a one-time programmable memory such as an anti-fuse device is used as a configuration memory, the configuration memory cannot be used as an LUT-RAM that requires writing and erasing.